package com.twq.oo.hierarchy

/**
 * Created by tangweiqun on 2017/12/1.
 */
object ObjectEquality {
  def main(args: Array[String]): Unit = {
    //基本类型的比较
    1 == 2
    1 != 2
    2 == 2

    //其他引用类型的比较
    List(1, 2, 3) == List(1, 2, 3)
    List(1, 2, 3) == List(4, 5, 6)
    List(1, 2, 3).equals(List(1, 2, 3))

    //不同类型的比较
    1 == 1.0 //true
    1.equals(1.0) //false
    List(1, 2, 3) == "hello"

    //与null的比较
    List(1, 2, 3) == null //false
    null == List(1, 2, 3) //空指针

    //如果是基本类型的话，java中的==和scala中的==功能是一样的
    //如果不是基本类型的话, java中的==是比较对象的引用，就是说两个指向JVM中相同对象的引用才相等，而scala却不是
    //但是scala也提供了支持引用比较的方法
    List(1, 2, 3).eq(List(1, 2, 3)) //eq对比的是引用
    List(1, 2, 3).ne(List(1, 2, 3))


    val list = List(1, 2, 3)
    val list2 = list

    list eq list2
  }
}
